package com.qijian.flowable.service;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.qijian.common.core.domain.AjaxResult;
import com.qijian.flowable.domain.Flow;
import com.qijian.flowable.domain.query.FlowQuery;
import com.qijian.flowable.domain.vo.FlowDetailVo;
import com.qijian.flowable.domain.vo.FlowVo;

import java.util.List;

/**
 * 流程Service接口
 *
 * @author qijian
 * @date 2024-03-01
 */
public interface IFlowService extends IService<Flow> {

    void saveFlow(FlowVo flowVo);

    FlowVo getInfoById(Long id);


    List<FlowDetailVo> getKnifeInfoById(Long id);

    void saveFlowKnife(FlowVo flowVo);


    Boolean checkInProcess(Long id,String mainFlowType);



    void editFlow(FlowVo flowVo);

    Page<FlowVo> pageVo(Page<FlowVo> page, QueryWrapper<FlowQuery> queryWrapper);


    Page<FlowDetailVo> pageVoNew(Page<FlowVo> page, QueryWrapper<FlowQuery> queryWrapper);


    Page<FlowVo> pageVoCommon(Page<FlowVo> page, QueryWrapper<FlowQuery> queryWrapper);


    AjaxResult commitFlow(FlowVo flowVo, String mainFlowType, Long userId,
                          Long deptId, String nickName, String deptName, String extra);

    AjaxResult commitFlow(List<Long> ids, String mainFlowType, Long userId, Long deptId, String nickName, String deptName);



//    AjaxResult refApproveKnife(FlowVo flowVo);


    void dealFlow(FlowVo flowVo);

    void checkFlow(FlowVo flowVo);


}
